//
//  DMHomeViewController.swift
//  DM_新浪微博
//
//  Created by Damon.JiAo on 16/2/25.
//  Copyright © 2016年 Demon_JiAo. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD


class DMHomeViewController: DMBaseTableViewController {

    var homeViewModel:DMHomeViewModel?
    
    var navg:(UINavigationController)?
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        /** 判断是否为访客视图，因为访客视图走这段代码会报错 */
        if DMUserViewModel.shareInstance.isLogin{
            /** 因为是继承了DMBaseTableViewController 所以有visitor的属性 */
            visitor?.setInfoSetting("关注一些人，回这里看看有什么惊喜", image: "visitordiscover_feed_image_house", anmintion: true)
            
            homeViewModel = DMHomeViewModel()
            
            self.tableView.estimatedRowHeight = 100;
            self.tableView.rowHeight = UITableViewAutomaticDimension
            
            /** cell的注册 */   /// 注意这里有可能会报错
            self.tableView.registerClass(DMHomeTableViewCell.self, forCellReuseIdentifier: "iconCell")
            
            /** 将底部footerView给“加载更多视图” */
            tableView.tableFooterView = pullView
            
            /*
            第一步: 设置下拉刷新的frame,我们在 DMRefreshView 内部去实现
            
            */
            tableView.addSubview(refreshView)
            // 第二步: 给TableView添加一个监听
            /*
            KVO主要用于 观察属性,
            KVO主要是在 UISCrollView上使用
            
            添加监听 采用 addObserver
            第一个参数: 谁来观察, 谁观察谁去实现监听方法observeValueForKeyPath
            第二个参数: keyPath 属性,这个属性,千万不要写错了!!!!!
            第三个参数: 监听值的改变规则(new - 新值)
            第四个参数:
            */
            
            //            tableView.addObserver(self, forKeyPath: "contentOffset", options: NSKeyValueObservingOptions.New, context: nil)
            refreshView.addTarget(self, action: "loadData", forControlEvents: UIControlEvents.ValueChanged)
            
        }
    }
    
    func loadData(){
     
        SVProgressHUD.show()
        
        /*
        下拉更多,去改变 since_id , max_id = 0
        */
        
        // 上提更多,需要把 since_id = 0
        var since_id = homeViewModel?.array.first?.cellModel?.id ?? 0
        
        var max_id = 0
        
        /** 上拉更多 */
        if pullView.isAnimating(){
            since_id = 0
            max_id = homeViewModel?.array.last?.cellModel?.id ?? 0
            
            max_id -= 1
        }
        /**  */

        homeViewModel?.loadData(since_id, max_id: max_id, finished: { (count:Int) -> () in
            
            self.tableView.reloadData()
            
            /** 菊花转的时候，肯定是上拉更多 */
            if !self.pullView.isAnimating(){
                self.showNewCount(count)
            }
            self.pullView.stopAnimating()
            
            SVProgressHUD.dismiss()
            
            self.refreshView.endRefreshing()
        })
        
    }
    
    /** 下拉更新时，自动填出一个更新了多少条数据的框！ */
    private func showNewCount(count:Int){
        
        let showMessageLabel = UILabel(frame: CGRectMake(0,64 - 44,KUIScreenWidth,44))
        
        showMessageLabel.backgroundColor = UIColor.orangeColor()
        
        if count > 0{
            showMessageLabel.text = "更新了\(count)条数据"
        }else{
            showMessageLabel.text = "暂无更新"
        }
        showMessageLabel.textAlignment = .Center
        
        showMessageLabel.textColor = UIColor.blackColor()
        
        showMessageLabel.font = UIFont.systemFontOfSize(16)

        // 添加到视图里
        self.navigationController?.view.insertSubview(showMessageLabel, belowSubview: (navigationController?.navigationBar)!)
        
        // 需要一个动画
        UIView.animateWithDuration(2, animations: { () -> Void in
            showMessageLabel.transform = CGAffineTransformMakeTranslation(0, 44)
            }) { (_) -> Void in
                //当动画完成之后,隐藏
                UIView.animateWithDuration(2, animations: { () -> Void in
                    // 回去 -- 回到原点 CGAffineTransformIdentity
                    showMessageLabel.transform = CGAffineTransformIdentity
                    
                    }, completion: { (_) -> Void in
                        //销毁或者隐藏
                        showMessageLabel.removeFromSuperview()
                })
        }

    }
    
    private lazy var pullView:UIActivityIndicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.Gray)
    
    private lazy var refreshView:DMRefreshView = DMRefreshView()
    
}




/** 代理方法 */
extension DMHomeViewController{
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return homeViewModel?.array.count ?? 0
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("iconCell", forIndexPath: indexPath) as! DMHomeTableViewCell
        
        cell.statusCellViewModel = homeViewModel?.array[indexPath.row]
        
        return cell
    }
}

